<?php

namespace App\Http\Controllers\OperationManagement;

use App\Models\OperationManagement\GovernmentDeviceCategory;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

/**
 * @group 基础信息管理->环卫->市政设施->设备类型管理
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */
class GovernmentDeviceCategoryController extends Controller
{
    /**
     * 设备类型列表---分页
     *
     * @bodyParam name string 设备类型名称
     *
     * @queryParam name string 设备类型名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function index(Request $request)
    {
        $vegetation = new GovernmentDeviceCategory();
        $data = $vegetation->getList($request);
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 设备类型列表---不分页
     *
     * @queryParam name string 设备类型名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function getAll(Request $request)
    {
        $data = GovernmentDeviceCategory::orderBy('sort','asc')->get();
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 新增设备类型
     *
     * @bodyParam name string required 设备类型名称
     * @bodyParam property char required 类型属性 0点 1面
     * @bodyParam color string 颜色
     * @bodyParam sort integer 排序
     *
     * @queryParam name string 设备类型名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function store(Request $request)
    {
        try {
            $data = GovernmentDeviceCategory::create($request->all());
            return response()->json(encodeMsg($data,201));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '设备类型种类添加失败!'],400));
        }
    }

    /**
     * 查看设备类型
     *
     * @bodyParam id integer required 设备类型种类自增长ID
     *
     * @queryParam name string 设备类型名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function show($id)
    {
        // 创建模型
        $data = GovernmentDeviceCategory::find($id);
        if($data == []) {
            return response()->json(encodeMsg(["message" => "没有该设备类型!"], 404));
        }
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 修改设备类型
     *
     * @bodyParam id integer required 设备类型自增长ID
     * @bodyParam name string required 设备类型名称
     * @bodyParam property char required 类型属性 0点 1面
     * @bodyParam color string 颜色
     * @bodyParam sort integer 排序
     *
     * @queryParam name string 设备类型名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function update(Request $request,$id)
    {
        // 创建模型
        $vegetation = GovernmentDeviceCategory::find($id);
        if($vegetation == []) {
            return response()->json(encodeMsg(["message" => "没有该设备类型!"], 404));
        }
        try {
            $vegetation->update($request->all());
            return response()->json(encodeMsg($vegetation,200));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '设备类型修改失败!'],400));
        }
    }

    /**
     * 删除设备类型
     *
     * @bodyParam id integer required 设备类型ID
     * @response 204 {
     *   "message": "删除成功"
     * }
     *
     *
     * @response 404 {
     *  "message": "没有该设备类型"
     * }
     */
    public function destroy($id)
    {
        // 创建模型
        $vegetation = GovernmentDeviceCategory::find($id);
        if($vegetation == []) {
            return response()->json(encodeMsg(["message" => "没有该设备类型!"], 404));
        }
        if($vegetation->delete()) {
            return response()->json(encodeMsg(["message" => "删除成功!"], 204));
        } else {
            return response()->json(encodeMsg(["message" => "删除失败!"], 400));
        }
    }

    /**
     * 批量删除设备类型
     *
     * @bodyParam ids integer required id集合字符串[格式：ids=1,2,3]
     * @response 204 {
     *   "message": "设备类型删除成功"
     * }
     *
     *
     */
    public function delete($ids)
    {
        $listId = explode(',', $ids);
        if(is_null($listId) || !is_array($listId) || !isset($listId)) {
            return response()->json(encodeMsg(["message" => "数据格式错误!"], 404));
        }
        GovernmentDeviceCategory::whereIn('id',$listId)->delete();
        return response()->json(encodeMsg(["message" => "设备类型删除成功!"], 204));
    }
}
